package com.note.feng.leetcode.algorithms.easy;

public class EightyThree {

    /**
     * 83 删除排序链表中的重复元素
     * 给定一个已排序的链表的头 head ， 删除所有重复的元素，使每个元素只出现一次 。返回 已排序的链表 。
     *
     * 示例 1：
     *
     * 输入：head = [1,1,2]
     * 输出：[1,2]
     * 示例 2：
     *
     * 输入：head = [1,1,2,3,3]
     * 输出：[1,2,3]
     *
     * 提示：
     *
     * 链表中节点数目在范围 [0, 300] 内
     * -100 <= Node.val <= 100
     * 题目数据保证链表已经按升序 排列
     *
     * 来源：力扣（LeetCode）
     * 链接：https://leetcode.cn/problems/remove-duplicates-from-sorted-list
     */
    /**
     * 解法：
     * 从头开始遍历，node节点若与后一个节点的值相同，node节点指向下一节点的下一节点，
     * 否则，node = 下一节点
     * @param head
     * @return
     */
    public ListNode deleteDuplicates(ListNode head) {
        if(head == null || head.next == null){
            return head;
        }
        ListNode node = head;
        while(node.next != null){
            if(node.val == node.next.val){
                node.next = node.next.next;
            }else{
                node = node.next;
            }
        }
        return head;
    }

     public class ListNode {
         int val;
         ListNode next;
         ListNode() {}
         ListNode(int val) { this.val = val; }
         ListNode(int val, ListNode next) { this.val = val; this.next = next; }
     }
}
